package com.xq.xq.kotlinlearnsingletom.java;


/**
 * @author jltxseo
 * Created by junlintianxia on 2019/11/29.
 * 实现单例访问
 * 基本上，把synchronized移动到代码内部是没有什么意义的，每次调用getInstance()还是要进行同步
 * 。同步本身没有问题，但是我们只希望在第一次创建SingletonD实例的时候进行同步，因此我们有了下面的写法——双重锁定检查（DCL）。
 */
public class SingletonD {

    /**
     * 单例对象实例
     */
    private static SingletonD instance = null;

    private SingletonD() {

    }

    public static SingletonD getInstance() {
        synchronized (SingletonD.class) {
            if (instance == null) {
                instance = new SingletonD();
            }
        }
        return instance;
    }

    @Override
    public String toString() {
        return "SingletonD";
    }
}
